//@author A0105543N
#ifndef ES_H
#define ES_H

#include "Trash.h"
#include "Record.h"
#include "BudgetPlanner.h"
#include "Search.h"

class ES{
private:
	Record *curRecord;
	Trash *forTrash;
	Search *mySearch;
public:
	ES();
	void ReportMonth(int,int);
	//pre: take in year and month
	//post: report the total expense and payment in this month
	void ReportDay(string);
	//pre:take in a particular day
	//post: report the total expense and payment on that day
	void undo();
	//undo operation can only be done to delete category and CRUD for expense and payment
	void redo();
	//undo an undo
	void updateFigure();
	//update total expense, payment and category
	void deleteExpCat();
	void deletePayCat();
	void createExpense();
	void createPayment();
	void updateExpense(int);
	//pre:take in update ID
	//post:update no.ID expense
	void updatePayment(int);
	void deleteExpense(int);
	//pre:take in delete ID
	//post:delete no.ID expense
	void deletePayment(int);
	bool TrackExpense(string);
	//pre:take in a date on which to track expense
	//post: print the all the transactions on that day
	bool TrackPayment(string);
	void Alert();
	void ExpenseKeywordSearch();
	void PaymentKeywordSearch();
	void Budget();
	void ExpensePowerSearch();
	void PaymentPowerSearch();
	void showOverallReport();
	void showAllTransaction();
};

#endif